package pe.com.bbva.mantenimiento.action;

import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import pe.com.bbva.mantenimiento.bo.TablaBO;
import pe.com.bbva.mantenimiento.domain.Tabla;
import pe.com.bbva.util.Constantes;
import pe.com.stefanini.core.action.GenericAction;
import pe.com.stefanini.core.domain.UsuarioSession;
import pe.com.stefanini.core.exceptions.BOException;
import pe.com.stefanini.core.util.StringUtil;

@Service("tamTarjetaAction")
@Scope("prototype")
@Results({
	@Result(name="viewFormTamTarjeta",type="tiles", location="viewFormTamTarjeta"),
	@Result(name="viewListTamTarjeta",type="tiles", location="viewListTamTarjeta"),
	@Result(name="listTamTarjeta",type="json",params={"root","grid"})
})
public class TamTarjetaAction extends GenericAction {
	private static final long serialVersionUID = 1L;
	private Logger logger = Logger.getLogger(this.getClass());
	@Resource
	private TablaBO tablaBO;
	
	private Long idTabla;
	private String codigoAntiguo;
	private Tabla tabla;
	private Tabla tablaBuscar;
	private Tabla tablaPadre;
	private String codigo;
	private String abreviado;
	private String descripcion;
	private String tipoTabla;
	
	private List<Tabla> listaTablas;

	public void cleanForm() {
		setIdTabla(null);
		setCodigoAntiguo("");
		setTabla(null);
		setTablaBuscar(null);
		setTablaPadre(null);
	}

	@Action(value="initTamTarjeta")
	public String init() {
		try {
			tablaBuscar = new Tabla();
		} catch (Exception e) {
			logger.error(StringUtil.getStackTrace(e));
		}
		return "viewListTamTarjeta";
	}
	
	@Action(value="findAllTamTarjeta")
	public String findAll() {
		try {
			if (tablaBuscar == null) {
				tablaBuscar = new Tabla();
			}
			tablaPadre = new Tabla();
			tablaPadre.setId(Constantes.ID_TABLA_TAMANIO);
			tablaBuscar.setPadre(tablaPadre);
			setGrid(tablaBO.findToGrid(tablaBuscar,getSidx()+" "+getSord(),getPage(),getRows()));
			if(getGrid().getRecords().equals(new Integer(0))){
				addActionError("No se encontraron resultados");
			}
		} catch (BOException e) {
			logger.error(StringUtil.getStackTrace(e));
		} catch (Exception e) {
			logger.error(StringUtil.getStackTrace(e));
		}
		return "listTamTarjeta";
	}
	
	@Action(value="newTamTarjeta")
	public String newForm() {
		return "viewFormTamTarjeta";
	}
	
	@Action(value="updateTamTarjeta")
	public String updateForm() {
		try {
			tabla = tablaBO.findTablaById(idTabla);
		} catch (Exception e) {
			addActionError(e.getMessage());
			logger.error(StringUtil.getStackTrace(e));
		}
		return "viewFormTamTarjeta";
	}
	
	@Action(value="deleteTamTarjeta")
	public String delete() {
		try {
			tablaBO.deleteLog(Tabla.class, idTabla);
			addActionMessage("Eliminado Correctamente.");
			if (tablaBuscar == null) {
				tablaBuscar = new Tabla();
			}
		} catch (BOException e) {
			logger.error(StringUtil.getStackTrace(e));
		} catch (Exception e) {
			logger.error(StringUtil.getStackTrace(e));
		}
		return "viewListTamTarjeta";
	}
	
	@Action(value="saveTamTarjeta")
	public String save() {
		String forward = "";
		String mensaje = "";
		if (idTabla == null) {
			mensaje = "Registrado Correctamente";
		} else {
			mensaje = "Actualizado Correctamente";
		}
		try {
			UsuarioSession usuarioSession = (UsuarioSession) getObjectSession(Constantes.USUARIO_SESSION);
			setCamposAuditoria(tabla, usuarioSession);
			tablaPadre = new Tabla();
			tablaPadre.setId(Constantes.ID_TABLA_TAMANIO);
			tabla.setPadre(tablaPadre);
			tablaBO.save(tabla);
			addActionMessage(mensaje);
			cleanForm();
			forward = "viewListTamTarjeta";
		} catch (BOException e) {
			forward = "viewFormTamTarjeta";
			addActionError(e.getMessage());
			logger.error(StringUtil.getStackTrace(e));
		} catch (Exception e) {
			forward = "viewFormTamTarjeta";
			addActionError(e.getMessage());
			logger.error(StringUtil.getStackTrace(e));
		}
		return forward;
	}
	
	public List<Tabla> getListaTablas() {
		return listaTablas;
	}

	public void setListaTablas(List<Tabla> listaTablas) {
		this.listaTablas = listaTablas;
	}

	public Long getIdTabla() {
		return idTabla;
	}

	public void setIdTabla(Long idTabla) {
		this.idTabla = idTabla;
	}

	public String getCodigoAntiguo() {
		return codigoAntiguo;
	}

	public void setCodigoAntiguo(String codigoAntiguo) {
		this.codigoAntiguo = codigoAntiguo;
	}

	public Tabla getTablaBuscar() {
		return tablaBuscar;
	}

	public void setTablaBuscar(Tabla tablaBuscar) {
		this.tablaBuscar = tablaBuscar;
	}

	public Tabla getTabla() {
		return tabla;
	}

	public void setTabla(Tabla tabla) {
		this.tabla = tabla;
	}


	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getAbreviado() {
		return abreviado;
	}

	public void setAbreviado(String abreviado) {
		this.abreviado = abreviado;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getTipoTabla() {
		return tipoTabla;
	}

	public void setTipoTabla(String tipoTabla) {
		this.tipoTabla = tipoTabla;
	}

	public void setTablaPadre(Tabla tablaPadre) {
		this.tablaPadre = tablaPadre;
	}

	public Tabla getTablaPadre() {
		return tablaPadre;
	}
}